\section{Introducción}

\subsection{Objetivos del trabajo práctico}

En este segundo trabajo práctico nos enfrentaremos con la necesidad de especificar el comportamiento del sistema \emph{MovilMiento}, cuyo alcance, objetivos y contexto modelamos en el trabajo anterior a través de un diagrama de contexto y un diagrama de objetivos. En este trabajo buscamos reducir al mínimo la ambigüedad en cuanto a la forma de lograr los objetivos descriptos e interactuar con los actores involucrados. Por último, se espera que una vez modelado el comportamiento con las herramientas y técnicas de especificación vistas en clase, se pueda verificar la \emph{trazabilidad} de los escenarios a través de los modelos generados.

\subsection{Técnicas de especificación utilizadas}

\subsubsection{Diagramas de Casos de Uso}

Utilizamos casos de uso para representar actividades que un actor deberá realizar relacionándose con la máquina de acuerdo al comportamiento que estamos especificando del sistema. Los casos de uso modelan una secuencia de interacciones que se desarrollan entre el actor y el sistema, a fin de especificar la comunicación y comportamiento de la máquina a través de sus interacciones. Definimos asociación de \emph{uso} y \emph{extensión} entre casos de uso para notar dependencia de inclusión y especialización respectivamente.

Este tipo de diagramas van acompañados del respectivo detalle de cada caso de uso abarcado por el diagrama, en el cual se especifican las interacciones entre el actor y la máquina, así como las relaciones con otros casos de uso, los caminos de acción alternativos y las pre y post condiciones de la interacción que se modela.

Los diagramas de casos de uso son útiles para ver quién hace qué en relación al
sistema, ya que sólo modela su interfaz. No abarca interacciones fuera de la
interfaz como pueden ser las del tipo actor-actor o las de tipo sistema-sistema.
A su vez, permite ver qué interacciones incluyen o especializan a otras dentro
de la misma interfaz, pero no imponen ningún tipo de sincronización o cronología
entre las interacciones que modelan.

\subsubsection{Diagramas de Actividad}


Los diagramas de actividad nos permiten representar varias acciones que se encuentran relacionadas con un orden específico.
Estos diagramas soportan varios actores mediante el uso de andariveles: en
éstos se encuentran las acciones que realiza el actor que corresponde a cada
uno.
También nos ayudan a modelar las acciones que suceden entre la máquina y los actores externos, e incluso las acciones
que suceden entre los actores externos sin interacción con la maquina.


Las interacciones entre el mundo y la máquina ya fueron descriptas en el diagrama de
casos de uso, pero éste diagrama solo explicita una relación entre dos casos de
uso cuando la relación es inmediata. En cambio, con los diagramas de actividad
podemos modelar
las secuencias de acciones que suceden, sin centrarse en cada paso de la secuencia en sí sino en la sucesión de acciones y sus respectivos actores involucrados.

Una limitación del diagrama de actividad es que no se ven reflejados los tiempos que tardan en transcurrir las acciones, como es el caso del nodo ``sincronizar información cuando haya Internet", ya que no se sabe cuánto tiempo transcurre hasta que el vendedor pueda tener acceso a Internet, sincronizar y emitir una respuesta del estado definitivo de la venta del producto. Nuestro sistema se sincroniza de dos formas, automáticamente (cada cierto tiempo fijo o cuando la central manda una actualización) y cuando el vendedor lo necesite (por ej. al cargar una venta).

\subsubsection{Diagramas Conceptuales}

Utilizaremos la variación de diagramas de clases cubierta en la materia para explicar los conceptos relacionados en la
descripción del problema a modelar, asi como representar las relaciones entre los mismos. En diagramas de este tipo
no se analizan actividades o acciones que transcurren en la máquina o en el mundo real, si no que se abstrae completamente
del tiempo y se intentan modelar las características que definen a cada concepto involucrado.

En los diagramas conceptuales hablamos de clases conceptuales, que engloban a potencialmente múltiples objetos de similares
características. El objetivo del diagrama es entonces definir esas clases a través de la caracterización de sus atributos propios
y de sus relaciones con otras clases, tanto cualitativa como cuantitativamente.


\subsubsection{Diagrama de comportamiento}
Complementarios a los diagramas de actividad son las máquinas de estados
finitos o FSMs. En nuestra especificación, los utilizamos para
mostrar en qué momentos y de qué forma ocurre la sincronización entre las
distintas partes del sistema. Además, permite introducir las nociones temporales
para especificar cuestiones como el intervalo en el que se espera para
reintentar la conexión en caso de que no hubiese internet al momento de hacer
una venta. Y por otro lado permite aclarar las condiciones necesarias a la hora
de avanzar en los estados posibles, como la existencia o no de equipos en el
depósito.

Junto con los demás diagramas, esto permite tener una visión acabada acerca del
comportamiento general del sistema a desarrollar.